面试系列 | 大厂数据开发面试经验
点击上方蓝色字关注置顶我们!
相关推荐:记一次蚂蚁金服面试经历
作者:小萝卜算子
编辑: 紫霞仙子
正文
前言
虽然面试讲究天时地利人和,也有一些机遇和运气。但是我想说,没有哪一种成功是可以来的不费吹灰之力,没有哪一种光鲜是可以一蹴而就的。你所看到的成果,无不是别人一路努力而来的结果。
如果把每次面试都当做一个机遇的话,你靠什么去抓住这个机遇?有一句话说:做正确的事,等待好事发生。感觉把这句话用在面试上,很合适。
其实就是想表达,把功夫用在平时,在点滴工作中积累,沉淀。一年365天,你所用的技术总共也没有几个知识点。
如果每周都积累几个,你还害怕面试吗?
如果你坚持每天都积累,你依然已经成了一个很厉害很厉害很厉害的人~~
说到这儿,感觉面经讲完了,自己都想笑,哈哈。下面我们详细从以下几个方面说一说。
0x01 职业发展方向
找工作前,先搞搞清楚自己要面试的职位,比如大数据方向比较常见的:
大数据套件(平台)开发
数仓开发
机器学习
如果是【大数据套件(平台)开发】,那对底层框架原理,源码是要求的,有好多都需要对这些框架进行二次优化开发。
如果是【数仓开发】,那就是数据治理,仓库建模,花样写sql,如果要想让自己更有优势,让人眼前一亮,最好有优化,源码经验。
如果是【机器学习】,那就是得各种算法原理,公式推导,以及在工作中,这些算法的?实际效果是怎么样的,解决了什么业务问题。
我们要专注其中一个方向,一定不要什么方向都写。我见很多简历,要仔细看很多遍,才能发现,噢,他/她可能在数仓方面更擅长一些。因为简历上即写了做算法,也写了做数仓开发,也写平台开发。
但实际上,大家都那么忙,在过简历的时候,不会仔细推敲很多遍。你的简历一定要突出和你面试职位的匹配性,突出你这么多年来,都在做什么。
0x02 SQL BOY/SQL GIRL
依照自己的经验,确认你要面试的职位的等级:高开、资深、专家...
这个也算是我对自己的一个复盘,之前,我自己也没好好想想清楚。不同的职级,对能力的要求不一样,这一块的功夫需要在平时工作中、日常生活中去刻意练习。
如果觉得自己在技术方向没有亮点,那就为自己寻找一个亮点,并不断的刻意深入。
大家普遍认为做数仓开发就是sql boy/sql girl ,但实际,数仓开发还有很多可以深入的地方。
你sql写的很好吗?
你敢不敢挑战现场写,并且以最快的速度写出最优化的sql?
你对常用的一些sql的原理都搞的很清楚吗?能经得住拷问吗?
你对仓库建模方向有哪些好的想法和实践?效果怎么样?
...
如果这些最基本的,都不能搞定,又怎么能觉得数仓开发的工作很浅显呢?那是你在为懒惰,不求上进找的借口吧。给自己列一些标准,如果不能达到,那就努力去练习。
确认目标,并向着目标靠近。
0x03 术业有专攻
一定要有自信。
一定要有自信。
一定要有自信。
做数仓开发,每天做的最多的事情就是写sql,但是我没觉得自己有多low。虽然每天写sql最多,并不代表我们只会这些。
一个小小的sql背后,有多少东西需要去搞搞明白:内存管理,sql编译过程,各种参数的原理,各种算子的原理...
之前有优化过好几个后端开发工程师写的sql,他们每天只关注业务逻辑开发,sql能力不是很强,导致一些页面因为sql效率问题,等10几分钟才能展示。
所以,一定要有自信,术业有专攻。
0x04 何必跟钱过不去呢
要面试了,最忌讳什么都有印象,什么都会,但又讲不出来。这样你准备十个问题,还不如精通一个问题。
很多时候你觉得自己紧张的忘了,实际上是你根本没有理解并记住啊,有木有?
准备好面试题,用自己认为最好的答案写好,自己对着墙发出声音讲一讲,一直到能非常顺溜的讲十遍。
然后就告诉自己,我已经准备好,克服紧张感。
好好准备面试,何必跟钱过不去呢?你说对不对哇,老铁~~~
0x05 面试题目总结
做为一名数据开发人员,我真的很想说,一定要把功夫用在平时,在点滴工作中积累,沉淀。每天要给自己留那么一点时间来思考,总结。。
附上总结的大厂面试题,这些题也都是很常见的:
Spark
join 实现有几种呢,源码有研究过吗?底层是怎么实现的
shuffle形式有几种?都做哪些优化
是通过什么管理shuffle中的内存,磁盘的
讲讲spark内存模型?说说你了解这些,对实际的工作有什么帮助?
rdd有哪些特性?
讲讲spark的高可用和高容错
宽依赖,窄依赖都是什么?有什么不同?除了大家都认为的不同点以外,还有哪些不同?
sql运行过程
full outer join原理
spark为什么比hive快
讲讲sparksql优化
讲讲RDD, DAG, Stage
说说groupByKey, reduceByKey
spark是怎么读取文件的?
有没有遇到过spark读取文件,有一些task空跑的现象?
窗口函数中几个rank函数有啥不同
parquet文件和orc文件有啥不同
MR/Hive
mr shuffle 是什么样子?具体原理是什么?为什么要排序?
mr map,reduce数量都什么相关
hdfs存放副本的算法是什么样的?
讲讲hive sql优化
hive 数据倾斜参数原理及解决方案
SQL
花样写sql,跟实际业务有关的
一般情况下,写出一个,然后,他就会问还有没有更优化的方式?
窗口函数,groupingsets cube这些都会用到。有好多是计算滑动的那种
这个sql 在hive中起几个job,为什么是这么几个job?
建模
方法论,数据仓库怎么构建?你是怎么分主题域的?对现在的业务有什么看法?现在的仓库是个什么情况,各个分层有什么特点?为什么这么分?
讲讲三范式
拉链表,缓慢变化维
给你一个新业务,怎么开展?
数据治理
数据质量,口径一致
基础
谈对jvm的理解
链表删除算法
排序算法
Btree简单讲讲
项目
说说项目中你做的比较有价值的东西
你做的字段血缘,这只是针对有sql语句的,那没有sql的(load的,从其它业务库用sqoop拉过来的,mr里解析的),你有没有想过怎么做字段血缘?
你做过印象最深刻的项目,为什么?你在中承担什么角色,发挥了什么作用?还可以优化吗?
写在最后
今天的分享到这里就要说再见了,希望能对你有所帮忙。正如前面吹角连营大佬所说,对于面试主观上,能力与JD匹配就可以了。如果你正在感觉迷茫,有一种最简单的方式,面向JD去学习、去匹配自己的能力、去定制职位发展路线。One More,再次感谢仙子,由心感谢,也欢迎大家关注这个公众号,一起进步,一起走的更远!
如果感觉文章有用,记得分享给你的朋友哦
(在看也是鼓励!)
推荐阅读
记一次蚂蚁金服面试经历
面试真经 | 大数据/数仓面试灵魂30问(附答案 | 已斩offer)
叮!致2020的一封情书,请查收!文末2019年文章精选
快来加入数据交流群吧~
欢迎加入技术交流群。戳:快来加入数据交流群!
等你
更多精彩,请戳"阅读原文"到"数仓之路"查看
!关注不迷路~ 各种干货、资源定期分享!
学习小密圈